#ifndef __COMM_H__
#define __COMM_H__

#include "cJSON.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

#define     DEBUGE_TRACE()      printf("%s %d \n", __func__, __LINE__)


#define zc_debug(...) \
		zc_profile_inner(__FILE__, __LINE__, __VA_ARGS__)

#define     MIN(x, y)       (((x) < (y))?(x):(y))

#define     IP_MAX_LENGTH   32
#define     COM_MAX_COUNT   8
#define     SERVER_CNT      4

#define     NET_DISCONNECT     0
#define     NET_CONNECTED     1

#define     PROTOCAL_TCP    0
#define     PROTOCAL_UDP    1


typedef struct com_conf{
    char num;       //串口号
    char parity;    //校验位  N:无校验  O：奇校验  E：偶校验
    char databits;  //数据位
    char stop;      //停止位  1，2
    int baud;       ///波特率
    char valued; //是否有效，0，无效 1，有效
    int fd;     //文件描述符
    int total_len; //收到串口数据的总长
} comConf;


typedef struct netinfo{
    char ip[IP_MAX_LENGTH];//  服务器IP   
    unsigned int port; //端口号
    char protocal;  //协议  0，tcp   1，udp
    char status;    //状态  初始状态为0， 连接到服务器为1
    int fd;
    pthread_mutex_t mutex;  //线程锁
    int counter;    //计数器
    int total_len;  //收到的总数
    char enable;    //使能服务器  0 不使用该服务器， 1 启用该服务器
}netInfo;


typedef struct sys_conf{
    comConf com[COM_MAX_COUNT]; //串口信息
    netInfo net[SERVER_CNT];    //网络信息
    char cnt_com;   //串口个数
    char cnt_net;   //服务器个数
    char status;    //系统状态，初始状态为0，系统启动后为1， 系统关闭时为2
    pthread_t pid_of_net;   //网络线程的pid
    pthread_t pid_of_com;   //串口线程的pid
    int crash_size;     //缓冲区个数
    
}sysConf;

//解析dev.conf文件
int ParseDevConf(sysConf *sys);




#endif
